/**
 * 进一步对基础模块的导入提炼
 * 有关模块注册指导原则请参考：https://github.com/cipchk/ng-alain/issues/180
 */
import { NgModule, Optional, SkipSelf, ModuleWithProviders } from '@angular/core';
import { RouteReuseStrategy } from '@angular/router';
import { AlainThemeModule } from '@delon/theme';
import { DelonACLModule } from '@delon/acl';
import { ReuseTabService, ReuseTabStrategy, PageHeaderConfig } from '@delon/abc';
export function pageHeaderConfig(): PageHeaderConfig {
  return Object.assign(new PageHeaderConfig(), { home_i18n: 'home' });
}

@NgModule({
  imports: [
    DelonACLModule.forRoot(),
    AlainThemeModule.forRoot()
  ],
})
export class DelonModule {
  constructor(@Optional() @SkipSelf() parentModule: DelonModule) { }

  static forRoot(): ModuleWithProviders {
    return {
      ngModule: DelonModule,
      providers: [
        // TIPS：若不需要路由复用需要移除以下代码及模板`<reuse-tab></reuse-tab>`
        {
          provide: RouteReuseStrategy,
          useClass: ReuseTabStrategy,
          deps: [ReuseTabService],
        },
        // TIPS：@delon/abc 有大量的全局配置信息，例如设置所有 `simple-table` 的页码默认为 `20` 行
        { provide: PageHeaderConfig, useFactory: pageHeaderConfig }
      ],
    };
  }
}
